let express = require("express");
let bodyParser = require("body-parser")
// 上传文件通常使用数据流上传
// multer 第三方模块儿就是用来解析流数据(解析文件)
// 引入multer模块儿用来解析文件
let multer = require("multer");
let filename ;
//配置multer 文件上传地址 文件名称 disk磁盘 Storage 存储
let multerConfig = multer.diskStorage({
    // 配置文件存储的位置 destination 目的地
    destination:'./public/file',
    //配置文件名称 req 请求体 file源文件信息 callback表示回调函数
    filename:function(req,file,callback){
       console.log(file)
    //    ?
    // 使用老文件名称 若想自定义文件名称需要获取originalname文件名称后缀 新名称.png
    let  oldname =    file.originalname;
    filename = oldname;
    callback(null,oldname)
    }
})
//使用multer配置信息
let upload = multer({
    storage:multerConfig
})
let web = express();
web.use(express.static("public"));
web.use(bodyParser.urlencoded({
    extended:true
}))
// 上传文件接口必须为post 请求 因为get请求有大小限制
// single 单一的表示 只能上传一个文件 使用multer解析文件信息
web.post("/upload",upload.single("myfile"),(req,res)=>{
    // res.send("上传成功"+filename)
    // 
    // res.send(`http://127.0.0.1:8080/file/${filename}`)
    res.send(`<img src='http://127.0.0.1:8080/file/${filename}' alt=''>`)
})

// ajax上传文件 后端接口
web.post("/ajax/upload",upload.single("photo"),(req,res)=>{
    res.send({
        code:0,
        msg:"上传成功",
        url:`http://127.0.0.1:8080/file/${filename}`
    })
})
web.listen(8080,()=>{
    console.log("服务端已启动")
})

/* 

上传文件流程：
1.下载安装multer模块儿用于解析文件；
2.引入multer模块儿
3. 配置multer 设置上传文件位置以及文件名称
4.使用上传文件配置信息
5.将配置好的mullter与接口结合解析文件

*/